/* Laboratorio 1 (Lunes 1:00 p.m.)
 * 
 * Integrantes:
 * 
 * Mariela Carrera   CI. 18683533
 * 
 * Abraham Mogollón  CI. 18136645
 * 
 * Lianeth Barazarte CI. 20188630
 * 
 * Johann Morales    CI 17627581
 * 
 * */


import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
import javax.swing.BorderFactory;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerListModel;

import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.SwingUtilities;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class VistaPrincipal extends javax.swing.JFrame {
	private JPanel jPanel1;
	private JButton btnRSeccion;
	private JLabel lblHola;
	private JButton btnEmpezar;
	private JLabel lblListados;
	private JLabel lblProcesos;
	private JSeparator s3;
	private JSeparator s2;
	private JSeparator s1;
	private JEditorPane jEditorPane1;
	private JButton btnProfesor;
	private JButton btnAplicarE;
	private JButton btnEvaluarA;
	private JComboBox cmbListados;
	private JSpinner cmbListado;
	private JButton btnListar;
	private JButton btnInscAlum;
	private JButton btnsalir;
	private JLabel lblSeccion;
	private JTextField txtSeccion;

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				VistaPrincipal inst = new VistaPrincipal();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public VistaPrincipal() {
		super();
		initGUI();
	}
	
	
	
	public void ordenarCedula(Seccion seccion){
		//Vector <Alumno> temp = new Vector();
        String cedula ="";
        String nombre;
        String apellido;
    	double nota1;
    	double nota2;
    	double nota3;
    	double notaFinal;
    	String estado;
        
        
        int t = seccion.getAlumno().size();
        for (int i = 0; i < t; i++) {
            for (int k = t- 1; k > i; k--) {
                
            	if(Integer.parseInt(seccion.getAlumno().elementAt(k).getCedula()) < Integer.parseInt(seccion.getAlumno().elementAt(k-1).getCedula()))
                {
            		            		
            		cedula=seccion.getAlumno().elementAt(k).getCedula();           
            		nombre=seccion.getAlumno().elementAt(k).getNombre();
            		apellido=seccion.getAlumno().elementAt(k).getApellido();
            		nota1=seccion.getAlumno().elementAt(k).getNota1();
            		nota2=seccion.getAlumno().elementAt(k).getNota2();
            		nota3=seccion.getAlumno().elementAt(k).getNota3();
            		notaFinal=seccion.getAlumno().elementAt(k).getNotaFinal();
            		estado=seccion.getAlumno().elementAt(k).getEstado();
            		
            		//seccion.getAlumno().elementAt(index).add(seccion.getAlumno().elementAt(k));
            		
            		seccion.getAlumno().elementAt(k).setCedula(seccion.getAlumno().elementAt(k-1).getCedula());
            		seccion.getAlumno().elementAt(k).setNombre(seccion.getAlumno().elementAt(k-1).getNombre());
            		seccion.getAlumno().elementAt(k).setApellido(seccion.getAlumno().elementAt(k-1).getApellido());
            		seccion.getAlumno().elementAt(k).setNota1(seccion.getAlumno().elementAt(k-1).getNota1());
            		seccion.getAlumno().elementAt(k).setNota2(seccion.getAlumno().elementAt(k-1).getNota2());
            		seccion.getAlumno().elementAt(k).setNota3(seccion.getAlumno().elementAt(k-1).getNota3());
            		seccion.getAlumno().elementAt(k).setNotaFinal(seccion.getAlumno().elementAt(k-1).getNotaFinal());
            		seccion.getAlumno().elementAt(k).setEstado(seccion.getAlumno().elementAt(k-1).getEstado());
                	
            		seccion.getAlumno().elementAt(k-1).setCedula(cedula);
            		seccion.getAlumno().elementAt(k-1).setNombre(nombre);
            		seccion.getAlumno().elementAt(k-1).setApellido(apellido);
            		seccion.getAlumno().elementAt(k-1).setNota1(nota1);
            		seccion.getAlumno().elementAt(k-1).setNota2(nota2);
            		seccion.getAlumno().elementAt(k-1).setNota3(nota3);
            		seccion.getAlumno().elementAt(k-1).setNotaFinal(notaFinal);
            		seccion.getAlumno().elementAt(k-1).setEstado(estado);
                    
                    
                }//fin if
            }// fin 2 for
        }//fin 1 for
       
       
    }//fin
	
	

	public static boolean existeSeccion(Seccion seccion){
		
		boolean ex = false;
		int sec = seccion.getNumero();
			
		if (sec > 0)
		{
			ex=true;
		}
		
		return ex;
	}
	
	
	
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				
				jPanel1 = new JPanel();
				getContentPane().add(jPanel1, BorderLayout.CENTER);
				jPanel1.setLayout(null);
				jPanel1.setPreferredSize(new java.awt.Dimension(390, 240));
				jPanel1.setBackground(new java.awt.Color(255,255,255));
				{
					txtSeccion = new JTextField();
					jPanel1.add(txtSeccion);
					txtSeccion.setBounds(113, 85, 58, 21);
				}
				{
					lblSeccion = new JLabel();
					jPanel1.add(lblSeccion);
					lblSeccion.setText("Nro. Seccion");
					lblSeccion.setBounds(20, 86, 113, 14);
					lblSeccion.setFont(new java.awt.Font("Bitstream Charter",2,16));
				}
				{
					btnRSeccion = new JButton();
					jPanel1.add(btnRSeccion);
					btnRSeccion.setText("Registrar");
					btnRSeccion.setBounds(177, 85, 114, 21);
					btnRSeccion.setBackground(new java.awt.Color(173,216,230));
					btnRSeccion.setFont(new java.awt.Font("DejaVu Serif",0,11));
				}
				{
					btnProfesor = new JButton();
					jPanel1.add(btnProfesor);
					btnProfesor.setText("Registrar Profesor");
					btnProfesor.setBounds(74, 170, 145, 29);
					btnProfesor.setBackground(new java.awt.Color(173,216,230));
					btnProfesor.setFont(new java.awt.Font("DejaVu Serif",0,11));
				}
				{
					btnInscAlum = new JButton();
					jPanel1.add(btnInscAlum);
					btnInscAlum.setText("Inscribir alumnos");
					btnInscAlum.setBounds(74, 216, 145, 28);
					btnInscAlum.setBackground(new java.awt.Color(173,216,230));
					btnInscAlum.setFont(new java.awt.Font("DejaVu Serif",0,11));
				}
				{
					btnsalir = new JButton();
					jPanel1.add(btnsalir);
					btnsalir.setText("Salir");
					btnsalir.setBounds(408, 15, 72, 35);
					btnsalir.setBackground(new java.awt.Color(173,216,230));
					btnsalir.setFont(new java.awt.Font("DejaVu Serif",0,11));
				}
				{
					btnListar = new JButton();
					jPanel1.add(btnListar);
					btnListar.setText("...");
					btnListar.setBounds(367, 311, 35, 23);
					btnListar.setBackground(new java.awt.Color(173,216,230));
					btnListar.setFont(new java.awt.Font("DejaVu Serif",0,11));

				}
				{
					ComboBoxModel cmbListadosModel = 
						new DefaultComboBoxModel(
								new String[] { "Alumnos por cedula", "Alumnos por Nota Final","Promedio de Notas por Alumno","Listado de Alumnos Aprobados","Listado de Alumnos Reprobados" });
					cmbListados = new JComboBox();
					jPanel1.add(cmbListados);
					cmbListados.setModel(cmbListadosModel);
					cmbListados.setBounds(74, 311, 281, 24);
					cmbListados.setFont(new java.awt.Font("DejaVu Serif",0,11));

					//cmbTipoFigura.addActionListener(cmbTipoFiguraListener);
				}
				{
					btnAplicarE = new JButton();
					jPanel1.add(btnAplicarE);
					btnAplicarE.setText("Aplicar Evaluaciones");
					btnAplicarE.setBounds(262, 171, 145, 27);
					btnAplicarE.setBackground(new java.awt.Color(173,216,230));
					btnAplicarE.setFont(new java.awt.Font("DejaVu Serif",0,11));
				}
				{
					btnEvaluarA = new JButton();
					jPanel1.add(btnEvaluarA);
					btnEvaluarA.setText("Evaluar Alumnos");
					btnEvaluarA.setBounds(262, 217, 145, 26);
					btnEvaluarA.setBackground(new java.awt.Color(173,216,230));
					btnEvaluarA.setFont(new java.awt.Font("DejaVu Serif",0,11));
				}
				{
					jEditorPane1 = new JEditorPane();
					jPanel1.add(jEditorPane1);
					jEditorPane1.setText("jEditorPane1");
					jEditorPane1.setBounds(177, -138, 573, 18);
				}
				{
					s1 = new JSeparator();
					jPanel1.add(s1);
					s1.setBounds(1, 62, 489, 9);
					s1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
					s1.setBackground(new java.awt.Color(173,216,230));
				}
				{
					s2 = new JSeparator();
					jPanel1.add(s2);
					s2.setBackground(new java.awt.Color(173,216,230));
					s2.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
					s2.setBounds(1, 129, 489, 6);
				}
				{
					s3 = new JSeparator();
					jPanel1.add(s3);
					s3.setBackground(new java.awt.Color(173,216,230));
					s3.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
					s3.setBounds(0, 261, 490, 11);
				}
				{
					lblProcesos = new JLabel();
					jPanel1.add(lblProcesos);
					lblProcesos.setText("Procesos ");
					lblProcesos.setBounds(20, 144, 79, 14);
					lblProcesos.setFont(new java.awt.Font("Bitstream Charter",2,16));
				}
				{
					lblListados = new JLabel();
					jPanel1.add(lblListados);
					lblListados.setText("Listados ");
					lblListados.setBounds(18, 272, 106, 14);
					lblListados.setFont(new java.awt.Font("Bitstream Charter",2,16));
				}
				{
					btnEmpezar = new JButton();
					jPanel1.add(btnEmpezar);
					btnEmpezar.setText("Comenzar");
					btnEmpezar.setFont(new java.awt.Font("DejaVu Serif",0,11));
					btnEmpezar.setBackground(new java.awt.Color(173,216,230));
					btnEmpezar.setBounds(336, 16, 104, 34);
					btnEmpezar.addActionListener(new ActionListener() {
						public void actionPerformed(ActionEvent e) {
							// TODO Auto-generated method stub					
							//System.exit(0);	
							btnRSeccion.setVisible(true);
							btnsalir.setVisible(true);
							btnProfesor.setVisible(true);
							btnInscAlum.setVisible(true);
							btnEvaluarA.setVisible(true);
							btnAplicarE.setVisible(true);
							btnListar.setVisible(true);
							txtSeccion.setVisible(true);
							lblSeccion.setVisible(true);
							lblProcesos.setVisible(true);
							lblListados.setVisible(true);
							cmbListados.setVisible(true);
							btnEmpezar.setVisible(false);
							lblHola.setText("Sistema de Inscripción");
							s1.setVisible(true);
							s2.setVisible(true);
							s3.setVisible(true);
						}
					});
					
				}
				{
					lblHola = new JLabel();
					jPanel1.add(lblHola);
					lblHola.setText("BIENVENIDO");
					lblHola.setBounds(20, 16, 347, 34);
					lblHola.setFont(new java.awt.Font("Purisa",0,28));
					lblHola.setBackground(new java.awt.Color(229,229,229));
				}
				{
					
					
					btnRSeccion.setVisible(false);
					btnsalir.setVisible(false);
					btnProfesor.setVisible(false);
					btnInscAlum.setVisible(false);
					btnEvaluarA.setVisible(false);
					btnAplicarE.setVisible(false);
					btnListar.setVisible(false);
					txtSeccion.setVisible(false);
					lblSeccion.setVisible(false);
					lblProcesos.setVisible(false);
					lblListados.setVisible(false);
					cmbListados.setVisible(false);
					s1.setVisible(false);
					s2.setVisible(false);
					s3.setVisible(false);
				}
				
			}

			//declaraciones principales
			final Seccion seccion = new Seccion();
			//Fin declaraciones principales
			
			
			btnRSeccion.addActionListener(new ActionListener() {

				public void actionPerformed(ActionEvent evt) 
				{
					int sec=0;
					
					try {
						
					if (!existeSeccion(seccion))
					{
											
						sec = Integer.parseInt(txtSeccion.getText());
						
						if (sec >0)
						{
						     seccion.setNumero(sec);
						     btnRSeccion.setEnabled(false);
						}
						else 
							JOptionPane.showMessageDialog(null, "La Seccion no ha sido asignada (Numeros enteros mayores a 0)", "Sistema", JOptionPane.INFORMATION_MESSAGE);
							
					}
					else 
						JOptionPane.showMessageDialog(null, " La  Seccion  ya fue asignada", "Sistema", JOptionPane.INFORMATION_MESSAGE);
					
				} catch (Exception e) {
					// TODO Auto-generated catch block
					//e.printStackTrace();
					
					JOptionPane.showMessageDialog(null, e.toString()+" La Seccion no ha sido asignada (Numeros enteros mayores a 0)", "Sistema", JOptionPane.INFORMATION_MESSAGE);
				}
					
					
				}
			});
			
			btnProfesor.addActionListener(new ActionListener() {

				public void actionPerformed(ActionEvent evt) {
										
					
					if (seccion.getProfesor().getCedula().equals(""))
					{
					     if (existeSeccion(seccion))
					     {
					    	 new VistaProfesor(seccion);
							
					     }
					     else JOptionPane.showMessageDialog(null, "No se encuentran secciones registradas", "Sistema", JOptionPane.INFORMATION_MESSAGE);		

					}else 
						JOptionPane.showMessageDialog(null, "El Profesor "+ seccion.getProfesor().getNombre()+"  "+seccion.getProfesor().getApellido()+" ya esta asignado en la seccion "+seccion.getNumero(), "Sistema", JOptionPane.INFORMATION_MESSAGE);
				
					
				}
			});
			
			btnInscAlum.addActionListener(new ActionListener() {
				
				public void actionPerformed(ActionEvent evt) {
					 
					 
					 if (existeSeccion(seccion))
				     {
						 if (seccion.getAlumno().size()>0){
							 
							 if (seccion.getAlumno().elementAt(0).getEstado().equals("Sin presentar")){
								 
								 new VistaAlumno (seccion);
								 
							 }else
								 JOptionPane.showMessageDialog(null, "Las evaluaciones ya fueron procesadas. No puede inscribir mas alumnos", "Sistema", JOptionPane.INFORMATION_MESSAGE);
								 
							 
						 }else new VistaAlumno (seccion);
				     }
				     else 
				    	 JOptionPane.showMessageDialog(null, "No se encuentran secciones registradas", "Sistema", JOptionPane.INFORMATION_MESSAGE);
				     				
				      
				}
			});
			
			
			btnsalir.addActionListener(new ActionListener(){

				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub					
					System.exit(0);						
				}				
			 });
			
			btnAplicarE.addActionListener(new ActionListener() {
				
				public void actionPerformed(ActionEvent evt)
				{
					if ( seccion.getAlumno().size()>0) //Valida si existen alumnos inscritos
					{	
						if (seccion.getProfesor().getCedula()!="")
						{
							if (seccion.getAlumno().elementAt(0).getEstado().equals("Sin presentar"))
							{
								seccion.aplicarEvaluacion();
								JOptionPane.showMessageDialog(null,"Las evaluaciones han sido aplicadas", "Sistema", JOptionPane.INFORMATION_MESSAGE);
							}
							else JOptionPane.showMessageDialog(null, "Las evaluaciones ya fueron procesadas", "Titulo", JOptionPane.INFORMATION_MESSAGE);
								
						}
						else JOptionPane.showMessageDialog(null, "No hay profesor asignado para aplicar la evaluación", "Titulo", JOptionPane.INFORMATION_MESSAGE);
							
					}
					else JOptionPane.showMessageDialog(null, "No se puede aplicar las evaluaciones, no hay alumnos inscritos", "Titulo", JOptionPane.INFORMATION_MESSAGE);
							
				}
				
			});
			
			btnEvaluarA.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent evt)
				{
					if (seccion.getAlumno().size()>0)
					{
						if (seccion.getAlumno().elementAt(0).getEstado().equals("Presento"))
						{
							seccion.getProfesor().evaluarAlumno(seccion);
							JOptionPane.showMessageDialog(null,"Los alumnos fueron evaluados", "Sistema", JOptionPane.INFORMATION_MESSAGE);
							
						}
						else if (seccion.getAlumno().elementAt(0).getEstado().equals("Aprobado")||seccion.getAlumno().elementAt(0).getEstado().equals("Reprobado"))
						{
							JOptionPane.showMessageDialog(null,"Ya han sido aplicado las evaluaciones", "Sistema", JOptionPane.INFORMATION_MESSAGE);		
							}
						
						else JOptionPane.showMessageDialog(null,"No se han aplicado las evaluaciones", "Sistema", JOptionPane.INFORMATION_MESSAGE);
							
					}
						else JOptionPane.showMessageDialog(null,"No hay alumnos inscritos", "Sistema", JOptionPane.INFORMATION_MESSAGE);
						
				}
			});
			

			btnListar.addActionListener(new ActionListener() {
				
				public void actionPerformed(ActionEvent evt) {
					
					try {
						listados(seccion, cmbListados.getSelectedIndex());
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			});
						
			pack();
			setSize(500, 400);
			
			
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	
	private void listados(Seccion seccion, int tipo) throws IOException
	{
		
		if (cmbListados.getSelectedIndex()==0)
		{	
			if (seccion.getAlumno().size()>0)
			{
				ordenarCedula(seccion);	
				seccion.listarCedula();
				new VistaListado (seccion, tipo);
			}
			else JOptionPane.showMessageDialog(null,"No hay alumnos inscritos", "Sistema", JOptionPane.INFORMATION_MESSAGE);
			
		}else if (cmbListados.getSelectedIndex()==1)
		
		{
			if (seccion.getAlumno().size()>0)
			{

				if (seccion.getAlumno().elementAt(0).getEstado().equals("Aprobado")||seccion.getAlumno().elementAt(0).getEstado().equals("Reprobado"))
				{
					//Vector <Alumno> vCopia = new Vector();
					//vCopia=seccion.getAlumno();
					seccion.listarPorNota(seccion.getNumero(),seccion.getProfesor().getTituloProfesor()+ ". "+  seccion.getProfesor().getNombre()+ " " + seccion.getProfesor().getApellido());
					new VistaListado (seccion, tipo);
				}
				else JOptionPane.showMessageDialog(null,"Los alumnos no han sido evaluados", "Sistema", JOptionPane.INFORMATION_MESSAGE);
									
			}
			else JOptionPane.showMessageDialog(null,"No hay alumnos inscritos", "Sistema", JOptionPane.INFORMATION_MESSAGE);
			
			
		}
		else if (cmbListados.getSelectedIndex()==2)
			
		{
			if (seccion.getAlumno().size()>0)
			{

				if (seccion.getAlumno().elementAt(0).getEstado().equals("Aprobado")||seccion.getAlumno().elementAt(0).getEstado().equals("Reprobado"))
				{
					double promedio= seccion.mostrarPromedio();
					JOptionPane.showMessageDialog(null,"El promedio de nota final de la sección es: "+promedio, "Sistema", JOptionPane.INFORMATION_MESSAGE);
				}
				else JOptionPane.showMessageDialog(null,"Los alumnos no han sido evaluados", "Sistema", JOptionPane.INFORMATION_MESSAGE);
									
			}
			else JOptionPane.showMessageDialog(null,"No hay alumnos inscritos", "Sistema", JOptionPane.INFORMATION_MESSAGE);
			
			
		}
		else if (cmbListados.getSelectedIndex()==3)
			
		{
			if (seccion.getAlumno().size()>0)
			{

				if (seccion.getAlumno().elementAt(0).getEstado().equals("Aprobado")||seccion.getAlumno().elementAt(0).getEstado().equals("Reprobado"))
				{
					seccion.listarEstado("Aprobado",seccion.getNumero(),seccion.getProfesor().getTituloProfesor()+ ". "+  seccion.getProfesor().getNombre()+ " " + seccion.getProfesor().getApellido());
					new VistaListado (seccion, tipo);
				}
				else JOptionPane.showMessageDialog(null,"Los alumnos no han sido evaluados", "Sistema", JOptionPane.INFORMATION_MESSAGE);
									
			}
			else JOptionPane.showMessageDialog(null,"No hay alumnos inscritos", "Sistema", JOptionPane.INFORMATION_MESSAGE);
			
			
		}
		
		else if (cmbListados.getSelectedIndex()==4)
			
		{
			if (seccion.getAlumno().size()>0)
			{

				if (seccion.getAlumno().elementAt(0).getEstado().equals("Aprobado")||seccion.getAlumno().elementAt(0).getEstado().equals("Reprobado"))
				{
					seccion.listarEstado("Reprobado",seccion.getNumero(),seccion.getProfesor().getTituloProfesor()+ ". "+  seccion.getProfesor().getNombre()+ " " + seccion.getProfesor().getApellido());
					new VistaListado (seccion, tipo);
				}
				else JOptionPane.showMessageDialog(null,"Los alumnos no han sido evaluados", "Sistema", JOptionPane.INFORMATION_MESSAGE);
									
			}
			else JOptionPane.showMessageDialog(null,"No hay alumnos inscritos", "Sistema", JOptionPane.INFORMATION_MESSAGE);
			
			
		}
	}


	
	
	
}
